Skip to content

end refactoring - #13

Open
BlopFlop wants to merge 1 commit into
sputnik-llc:mainfrom
BlopFlop:refactoring_v1
Open

end refactoring#13
BlopFlop wants to merge 1 commit into
sputnik-llc:mainfrom
BlopFlop:refactoring_v1

Conversation

@BlopFlop

Copy link
Copy Markdown

Что зарефачил

Архитектурные паттерны и подходы

🏗️ Архитектура и разделение слоев

  • API-слой: Реализован через паттерн Router Factory. Эндпоинты выполняют роль тонких контроллеров, отвечая исключительно за маршрутизацию, конфигурацию OpenAPI и HTTP-контракты.
  • Бизнес-логика: Выделена в независимые сценарии использования через паттерн Command.
  • Слой данных: Взаимодействие с базами данных и внешними сервисам полностью изолировано с помощью паттерна Repository.
  • Связанность компонентов: Благодаря строгому соблюдению принципа инверсии зависимостей удалось органично изолировать части приложения друг от друга. Слои получились независимыми, расширяемыми и легко тестируемыми.

⚙️ Управление ресурсами и Concurrency

  • Жизненный цикл: Все основные переиспользуемые сущности и клиенты подключений инициализируются в рамках Lifespan/CrateApp и хранятся непосредственно в состоянии приложения (app.state в FastAPI). Это обеспечивает единую точку конфигурации и эффективное управление системными ресурсами.
  • Асинхронность: Постарался весь блокирующий код убрать под asyncio.to_thread(celery) и anyio.run_sync(FastApi)

🧪 Стратегия тестирования

Высокая изолированность архитектурных слоев позволила выстроить эффективную и быструю модель тестирования:

💡 Примечание: Данный проект выполнен примерно в том же стиле что и мой же проект https://github.com/BlopFlop/search_docs/tree/dev/tests поэтому если бы я писал тесты то это выглядело бы так

  • Smoke-тесты: Выступают в роли первой линии проверки. Они валидируют успешный запуск базы данных и проверяют доступность приложения через эндпоинт Healthcheck.
  • Функциональные тесты: Проверяют целиком изолированный объект резолвера, подменяя внешний мир и базы данных быстрыми заглушками репозиториев.
  • Интеграционные тесты: Покрывают исключительно слой репозиториев Repository, проверяя корректность запросов в реальной, изолированной тестовой среде (БД и Elasticsearch).
  • E2E-тесты: Запускают приложение целиком в тестовом окружении и проверяют по одному ключевому положительному сценарию на каждый сквозной процесс.

@BlopFlop BlopFlop closed this Jul 11, 2026
@BlopFlop BlopFlop reopened this Jul 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant